ngl: ensure vertices buffer allocates enough vertices
authorChristian Hergert <chergert@redhat.com>
Thu, 18 Mar 2021 17:43:24 +0000 (10:43 -0700)
committerChristian Hergert <chergert@redhat.com>
Thu, 18 Mar 2021 17:43:24 +0000 (10:43 -0700)
It's not guaranteed that a single power of two growth will be enough.

Fixes #3770

gsk/ngl/gsknglbufferprivate.h

index fc67bc9e0b0d1821d326dc65797021cdbffd4d58..cbd21c83da5e55f2ea9f634e60e6091f74bb9219 100644 (file)
@@ -32,7 +32,7 @@ typedef struct _GskNglBuffer
   gsize   buffer_len;
   guint   count;
   GLenum  target;
-  guint   element_size;
+  gsize   element_size;
 } GskNglBuffer;
 
 void   gsk_ngl_buffer_init    (GskNglBuffer *self,
@@ -50,7 +50,8 @@ gsk_ngl_buffer_advance (GskNglBuffer *buffer,
 
   if G_UNLIKELY (buffer->buffer_pos + to_alloc > buffer->buffer_len)
     {
-      buffer->buffer_len *= 2;
+      while (buffer->buffer_pos + to_alloc > buffer->buffer_len)
+        buffer->buffer_len *= 2;
       buffer->buffer = g_realloc (buffer->buffer, buffer->buffer_len);
     }